package com.itheima.mapper;

import com.itheima.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RoleMapper {
    /**
     * 增加角色表并回显id
     * @param role
     */
    void add(Role role);

    /**
     * 在角色与权限中间表添加
     * @param id
     * @param permissionIds
     */
    void setRoleAndPermission(@Param("id") Integer id,@Param("permissionIds") Integer[] permissionIds);

    /**
     * 根据条件查询
     * @param queryString
     * @return
     */
    List<Role> findByCondition(@Param("queryString") String queryString);

    /**
     * 根据id查询角色
     * @param id
     * @return
     */
    Role findById(@Param("id") Integer id);

    /**
     * 从中间表获取该角色拥有的权限id
     * @param id
     * @return
     */
    List<Integer> findPermissionIdsByRoleId(@Param("id")Integer id);

    /**
     * 更新角色数据
     * @param role
     */
    void updateByRole(Role role);

    /**
     * 清除中间表中关于这个角色的权限ids
     * @param id
     */
    void clearRoleAndPermissionByRoleId(@Param("id")Integer id);

    /**
     * 通过id删除角色
     * @param id
     */
    void deleteById(@Param("id")Integer id);

    /**
     * 为菜单中间表添加关联
     * @param id
     * @param menuIds
     */
    void setRoleAndMenu(@Param("id") Integer id,@Param("menuIds") Integer[] menuIds);

    /**
     * 清除角色与菜单ids
     * @param id
     */
    void clearRoleAndMenuByRoleId(@Param("id") Integer id);

    /**
     * 查询所有角色数据
     * @return
     */
    List<Role> findAll();
}
